﻿#define  _CRT_SECURE_NO_WARNINGS 1
#include "game.h"​

 void IntBoard(char arr[ROWS][COLS], int rows, int cols,int set)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < cols; j++)
		{
			arr[i][j] = set;
		}
	}
}

 	 //有人会对为什么我们要将arr的行列创建成ROWS,COLS。	
	 //这是因为我们在创建show数组的时候是用ROWS,COLS 创建的。
	 
 void DisplayBoard(char arr[ROWS][COLS], int row, int col)
 {
	 int i = 0;//控制行数
	 int j = 0;//控制列数

	 //使用for循环打印出纵坐标
	 for (i = 0; i <= col; i++)
	 {
		 printf("%d ", i);
	 }
	 printf("\n");//注意换行
	 //下标为1的行数开始表示第一列，
	 //因为我们使用的show数组是初始化为11*11的格子的
	 for (i = 1; i <= row; i++)
	 {
		 printf("%d ", i);//在每行的前面加上坐标1-9
		 for (j = 1; j <= col; j++)//下标为1开始的列数。这样在后面我们输入坐标的时候就不会错误
		 {
			 printf("%c ", arr[i][j]);
		 }
		 printf("\n");//一行完成我们需要回车。
	 }
 }

 void Set_Mine(char arr[ROWS][COLS], int row, int col)
 {
	 int count = mine_num;//雷的数量

	 while (count)
	 {
		 int	x = rand() % row + 1;//任何一个数取9的余数是0-8加一就是1-9；
		 //即在11*11的格子里我们将下标为1-9的元素塞进雷“1”
		 int	y = rand() % col + 1;//使用rand我们需要srand来进随机
		 if (arr[x][y] == '0')
		 {
			 arr[x][y] = '1';
			 count--;
		 }
	 }
 }

 int Get_Mine(char mine[ROWS][COLS], int x, int y)
 {
	 return mine[x - 1][y - 1] + mine[x - 1][y] + mine[x - 1][y + 1] +
		 mine[x][y - 1] + mine[x][y + 1] + mine[x + 1][y - 1] + mine[x + 1][y] +
		 mine[x + 1][y] - 8 * '0';//如果一个雷没有则是8个’0‘，则值为0；
	 //如果有一个则有一个字符’1‘加起来之后减8*’0‘就是1；
 }


 void Fine_Mine(char show[ROWS][COLS], char mine[ROWS][COLS], int row, int col)
 {
	 int x = 0;
	 int y = 0;
	 int win = 0;
	 while (win < row * col - mine_num)
	 {
		 printf("请输入你要排查的坐标:");
		 scanf("%d %d", &x, &y);
		 if (x >= 1 && x <= row && y >= 1 && y < col)
		 {
			 if (mine[x][y] == '1')
			 {
				 //如果是雷就跳出循环
				 printf("你被炸死了\n");
				 break;
			 }
			 else
			 {
				 //如果不是雷就统计周围的雷的数量
				 int count = Get_Mine(mine, x, y);
				 show[x][y] = Get_Mine(mine, x, y) + '0';//Get_Mine 的返回类型为字符，则如果周围有n个雷，
				 //加上字符'0'就是字符‘1’。。。。。
				 DisplayBoard(show, ROW, COL);
				 win++;
			 }
		 }
		 else
		 {
			 printf("坐标非法\n");
		 }
	 }
	 if (win == row * col - mine_num)
	 {
		 printf("恭喜你排雷成功\n");
	 }
 }